package zhuzx.generator;

import lombok.Getter;
import lombok.ToString;

import java.util.List;

/**
 * 表字段的元数据，从DatabaseMetaData.getColumns返回的元数据中选取了一部分属性。
 * @see java.sql.DatabaseMetaData#getColumns
 * @author zhuzx 2022/8/6
 */
@Getter
@ToString
public class DbColumnMetadata {

	/** 数据库列名（字段名）*/
	String oriName;
	/** 原始的数据库类型，比如int unsigned、varchar等。*/
	String oriType;
	/** 转为驼峰后的java字段名 */
	String javaName;
	/** 字段对应的Java类型（非lang包下的是全类名）*/
	String javaType;
	/** 字段备注（comment）*/
	String remark;
	/** 是否允许为空*/
	boolean isNullable;
	/** 是否为自增列*/
	boolean isAutoincr;
	/** 这个列在表中的排列顺序，从1开始。*/
	int ordinal;
	/** 默认值*/
	String defaultValue;
	/**
	 * 允许存储的最大长度。<br>
	 * 数字：整数部分的位数；字符串：字符个数；时间：字符串表示的值的字符个数，比如datetime的长度为19。
	 */
	int size;
	/** 小数的位数 */
	int decimalDigits;
	/**
	 * 所在的唯一索引的相关字段名，可能有多个（联合唯一索引）。<br>
	 * 同一个列被加了多个唯一索引的情况理论上有，但实际上没有理由这么设计表。<br>
	 * 这里给字段存上这个唯一索引全部的相关字段比较实用，否则使用的时候不好获取这个团体关系，
	 * 导致的后果是这些字段都挂了这个List，而相对之下，去重是好处理的。
	 */
	List<String> uniqueColumns;

	/** 所在的唯一索引的相关字段的中文注释列表 */
	List<String> uniqueColumnRemarks;
	
}